package com.fwtai.quartz;

import com.fwtai.api.ApiBuyDao;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;

import java.time.LocalDateTime;

/**
 * 实现动态定时任务
 * @作者 田应平
 * @版本 v1.0
 * @创建时间 2022/3/13 11:23
 * @QQ号码 444141300
 * @Email service@yinlz.com
 * @官网 <url>http://www.fwtai.com</url>
*/
//@Configuration
//@EnableScheduling//开启定时任务
public class DynamicQuartz implements SchedulingConfigurer{

  private final ApiBuyDao apiPayDao;

  public DynamicQuartz(final ApiBuyDao apiPayDao){
    this.apiPayDao = apiPayDao;
  }

  //执行定时任务
  @Override
  public void configureTasks(final ScheduledTaskRegistrar taskRegistrar){
    taskRegistrar.addTriggerTask(()->{
      //执行任务内容
      System.out.println("已动态执行任务,"+ LocalDateTime.now().toLocalTime());
    },(triggerContext) -> {
      //触发器,执行周期
      //final String cron = apiPayDao.getCron("1");//从数据库里获取定时任务表达式,然后给下面的赋值即可
      //执行回调周期
      return new CronTrigger("0/3 * * * * ?").nextExecutionTime(triggerContext);//此处的表达式是每3秒执行一次
    });
  }
}